#ifndef _BSP_DS18B20_H_
#define _BSP_DS18B20_H_

#include "stm32f10x.h"

/****************下面做一些有关DS18B20管脚的宏定义*************************/
#define			DS18B20_IN_WATER_TEMP_PORT				GPIOB
#define			DS18B20_IN_WATER_TEMP_PIN				GPIO_Pin_14
#define			DS18B20_IN_WATER_TEMP_CLK				RCC_APB2Periph_GPIOB

#define			DS18B20_OUT_WATER_TEMP_PORT				GPIOB
#define			DS18B20_OUT_WATER_TEMP_PIN				GPIO_Pin_13
#define			DS18B20_OUT_WATER_TEMP_CLK				RCC_APB2Periph_GPIOB

#define			DS18B20_OUT_ENVIRON_TEMP_PORT				GPIOA
#define			DS18B20_OUT_ENVIRON_TEMP_PIN				GPIO_Pin_10
#define			DS18B20_OUT_ENVIRON_TEMP_CLK				RCC_APB2Periph_GPIOA

#define			DS18B20_OUT_TUBE_TEMP_PORT				GPIOA
#define			DS18B20_OUT_TUBE_TEMP_PIN				GPIO_Pin_9
#define			DS18B20_OUT_TUBE_TEMP_CLK				RCC_APB2Periph_GPIOA

#define			DS18B20_OUT_COMPRESSOR_TEMP_PORT				GPIOA
#define			DS18B20_OUT_COMPRESSOR_TEMP_PIN				GPIO_Pin_15
#define			DS18B20_OUT_COMPRESSOR_TEMP_CLK				RCC_APB2Periph_GPIOA   //因为要取消JTDI

//管脚操作宏函数
#define			DS18B20_IN_WATER_TEMP_HIGH()				GPIO_SetBits(DS18B20_IN_WATER_TEMP_PORT,DS18B20_IN_WATER_TEMP_PIN)   //这个脚为写管脚
#define			DS18B20_IN_WATER_TEMP_LOW()				GPIO_ResetBits(DS18B20_IN_WATER_TEMP_PORT,DS18B20_IN_WATER_TEMP_PIN)

#define			DS18B20_OUT_WATER_TEMP_HIGH()				GPIO_SetBits(DS18B20_OUT_WATER_TEMP_PORT,DS18B20_OUT_WATER_TEMP_PIN)   //这个脚为写管脚
#define			DS18B20_OUT_WATER_TEMP_LOW()				GPIO_ResetBits(DS18B20_OUT_WATER_TEMP_PORT,DS18B20_OUT_WATER_TEMP_PIN)

#define			DS18B20_OUT_ENVIRON_TEMP_HIGH()				GPIO_SetBits(DS18B20_OUT_ENVIRON_TEMP_PORT,DS18B20_OUT_ENVIRON_TEMP_PIN)   //这个脚为写管脚
#define			DS18B20_OUT_ENVIRON_TEMP_LOW()				GPIO_ResetBits(DS18B20_OUT_ENVIRON_TEMP_PORT,DS18B20_OUT_ENVIRON_TEMP_PIN)

#define			DS18B20_OUT_TUBE_TEMP_HIGH()				GPIO_SetBits(DS18B20_OUT_TUBE_TEMP_PORT,DS18B20_OUT_TUBE_TEMP_PIN)   //这个脚为写管脚
#define			DS18B20_OUT_TUBE_TEMP_LOW()				GPIO_ResetBits(DS18B20_OUT_TUBE_TEMP_PORT,DS18B20_OUT_TUBE_TEMP_PIN)

#define			DS18B20_OUT_COMPRESSOR_TEMP_HIGH()				GPIO_SetBits(DS18B20_OUT_COMPRESSOR_TEMP_PORT,DS18B20_OUT_COMPRESSOR_TEMP_PIN)   //这个脚为写管脚
#define			DS18B20_OUT_COMPRESSOR_TEMP_LOW()				GPIO_ResetBits(DS18B20_OUT_COMPRESSOR_TEMP_PORT,DS18B20_OUT_COMPRESSOR_TEMP_PIN)

#define			DS18B20_IN_WATER_TEMP()					GPIO_ReadInputDataBit(DS18B20_IN_WATER_TEMP_PORT,DS18B20_IN_WATER_TEMP_PIN)
#define			DS18B20_OUT_WATER_TEMP()					GPIO_ReadInputDataBit(DS18B20_OUT_WATER_TEMP_PORT,DS18B20_OUT_WATER_TEMP_PIN)
#define			DS18B20_OUT_ENVIRON_TEMP()					GPIO_ReadInputDataBit(DS18B20_OUT_ENVIRON_TEMP_PORT,DS18B20_OUT_ENVIRON_TEMP_PIN)
#define			DS18B20_OUT_TUBE_TEMP()					GPIO_ReadInputDataBit(DS18B20_OUT_TUBE_TEMP_PORT,DS18B20_OUT_TUBE_TEMP_PIN)
#define			DS18B20_OUT_COMPRESSOR_TEMP()					GPIO_ReadInputDataBit(DS18B20_OUT_COMPRESSOR_TEMP_PORT,DS18B20_OUT_COMPRESSOR_TEMP_PIN)

void SysTick_Delay_Us(uint32_t us);
uint8_t Start18B20 (uint8_t index);
void	DS18B20_GPIO_Init(void);
void    DS18B20_Temp(void);
#endif

